/**
 *  CloudEdit- Editor colaborativo peer-to-peer
 *  Author: Miguel Souto Bartolomé
 *  Web: http://code.google.com/p/cloudedit/
 *
 *  This program is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

package com.google.gwt.cloudedit.server.auxiliares;

import java.io.Serializable;
import java.util.Date;

/**
 * Clase de apoyo para la conversión entre datos de listado serializables GWT y 
 * datos de listado serializables normales.
 * 
 * @author Miguel Souto Bartolomé
 * @version 1.0
 */
public class ListadoSerializable implements Serializable {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = -6289847648182581688L;

	/** El identificador del archivo. */
	private String id;
    
    /** El nombre del archivo. */
    private String name;
    
    /** La fecha de creación del archivo. */
	private Date created;

	 /** El tamaño del archivo. */
	private long size;
    
    /**
     * Método de creación vacío, necesario para hacer la clase serializable.
     *
     */
    public ListadoSerializable () {
    	//
    }
    
    /**
     * Método de creación
     *
     * @param id el identificador del archivo
     * @param name el nombre del archivo
     * @param created la fecha de creación del archivo
     * @param size el tamaño del archivo
     c*/
    public ListadoSerializable (String id, String name, Date created, long size) {
    	this.id = id;
    	this.name = name;
    	this.created = created;
    	this.size = size;
    }
    
    /**
     * Devuelve el identificador del archivo.
     *
     * @return el identificador
     */
    public String getId() {
        return this.id;
    }

    /**
     * Devuelve el tamaño del archivo.
     *
     * @return el tamaño
     */
    public long getSize() {
        return this.size;
    }
   
    /**
     * Devuelve el nombre del archivo.
     *
     * @return el nombre
     */
    public String getName() {
        return this.name;
    }
    
    /**
     * Devuelve la fecha de creación del archivo.
     *
     * @return la fecha
     */
    public Date getCreated() {
        return this.created;
    }


    /* (non-Javadoc)
     * @see java.lang.Object#equals(java.lang.Object)
     */
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        ListadoSerializable that = (ListadoSerializable) o;

        if (this.id != null ? !this.id.equals(that.id) : that.id != null) return false;

        return true;
    }

    /* (non-Javadoc)
     * @see java.lang.Object#hashCode()
     */
    public int hashCode() {
        return (this.id != null ? this.id.hashCode() : 0);
    }

    /* (non-Javadoc)
     * @see java.lang.Object#toString()
     */
    public String toString() {
        return "FileDescriptorData{" +
                "id='" + this.id + '\'' +
                ", name='" + this.name + '\'' +
                '}';
    }
}
